package com.studymaster.util;

import java.io.File;

/**
 * 重庆招生考试服务公司
 * java文件通用类
 * @author 杨建波
 *
 */
public class FileUtil {

	/**
	 * 判断路径是否存在
	 * @param path 路径
	 * @return
	 */
	public static boolean isPathExist(String path)
	{
		boolean result=false;
		if(path!=null&&!path.trim().equals(""))
		{
			File file=new File(path);
			if(file.isDirectory())
			{
				result= true;
			}
			else
			{
				result= false;
			}
		}
		return result;
	}
	/**
	 * 判断一个文件是否存在
	 * @param file 文件全名
	 * @return
	 */
	public static boolean isFileExist(String file)
	{
		boolean result=false;
		if(file!=null&&!file.trim().equals(""))
		{
			File f=new File(file);
			if(f.exists()&&f.isFile())
			{
				result= true;
			}
			else
			{
				result= false;
			}
		}
		return result;
	}
	/**
	 * 创建一个目录
	 * @param path
	 * @return
	 * @throws Exception 
	 */
	public static boolean createPath(String path) throws Exception
	{
		boolean result=false;
		if(path!=null&&!path.trim().equals(""))
		{
			File file=new File(path);
			if(file.isDirectory())
			{
				result= false;
				throw new Exception("目录已经存在");
			}
			else
			{
				if(file.mkdirs())
				 {result=true;}
			}
		}
		return result;
	}
	/**
	 * 创建一个文件
	 * @param file 文件名包含路径
	 * @return
	 * @throws Exception 
	 */
	public static boolean createFile(String file) throws Exception
	{
		boolean result=false;
		if(file!=null&&!file.trim().equals(""))
		{
			if(isFileExist(file))
			{
				result=false;
				throw new Exception("文件已经存在");
			}
			else
			{
				File f=new File(file);
	
				if(!f.getParentFile().exists())
				{
					f.getParentFile().mkdirs();
				}
				result=f.createNewFile();
	
			}
		}
		return result;
	}
	public static boolean deleteFile(String sPath) {   
		boolean flag = false;  
		if(sPath!=null&&!sPath.trim().equals(""))
		{
			File file = new File(sPath);   
			// 路径为文件且不为空则进行删除   
			if (file.isFile() && file.exists()) {   
				file.delete();   
				flag = true;   
			}   
		}
		return flag;   
	}  
	public static boolean deleteDirectory(String sPath) {  
		
		boolean result=false;
		if(sPath!=null&&!sPath.trim().equals(""))
		{
			if (!sPath.endsWith(File.separator)) {   
		        sPath = sPath + File.separator;   
		    }   
			 File dirFile = new File(sPath);   
			 if (!dirFile.exists() || !dirFile.isDirectory()) {   
			        result=false;   
			    }
			 else
			 {
				 boolean flag = true;   
				 File[] files = dirFile.listFiles();   
				 for (int i = 0; i < files.length; i++) {   
					 //删除子文件   
					 if (files[i].isFile()) {   
						 flag = deleteFile(files[i].getAbsolutePath());   
						 if (!flag) break;   
					 } //删除子目录   
					 else {   
						 flag = deleteDirectory(files[i].getAbsolutePath());   
						 if (!flag) break;   
					 }   
				 } 
				 result=flag;
			 }
			 result=dirFile.delete();
		}
		return result;
	}
	/**
	 * 删除文件，或者指定目录（指定目录和此目录下的所有子目录以及子文件删除）
	 * @param sPath 文件或者目录
	 * @return
	 */   
	public static boolean delete(String sPath) {   
		boolean result = false;  
		if(sPath!=null&&!sPath.trim().equals(""))
		{
			File file = new File(sPath);   
			// 判断目录或文件是否存在   
			if (!file.exists()) 
			{  // 不存在返回 false   
				return result;
			} 
			else
			{   
				// 判断是否为文件   
				if (file.isFile()) 
				{  // 为文件时调用删除文件方法   
					result=deleteFile(sPath); 
				} else 
				{  // 为目录时调用删除目录方法   
					return deleteDirectory(sPath);   
				}   
			} 
		}
	    return result;
	}
	public static void main(String[] args) {
		String path="F:/f";
		System.out.println(isPathExist(path));
		System.out.println(isFileExist(path));
		System.out.println(delete(path));
		
	}
}
